#ifndef FREEIP_H
#define FREEIP_H
#include<string>
#include"tcp.hpp"

struct Ipnet
{
  typedef unsigned short iptype;
  iptype addr[4], mask[4];

  Ipnet(){}

  Ipnet(const string& s);
  
  Ipnet(istream&is);
  
  void set_addr(istream&is);
  
  void set_mask(istream&is);
  
  int ip_diff(const int*aip)const;
  
  string get_addr()const;
  
  string get_mask()const;
  
  bool operator <(const struct Ipnet &r)const;
  
};

extern vector<Ipnet> freeipnets;

bool is_freeip(const int* aip);
bool is_freeip(const string& ip);
bool is_freeip(const struct in_addr*addr);
bool is_freeip(const TcpHost& h);
void gen_pac(ostream&os, const string &proxy);

#endif
